/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ThreadPanel {
    display: flex;
    flex-direction: column;

    .mx_BaseCard_header {
        margin-bottom: 12px;
        .mx_BaseCard_close,
        .mx_BaseCard_back {
            width: 24px;
            height: 24px;
        }
        .mx_BaseCard_back {
            left: -4px;
        }
        .mx_BaseCard_close {
            right: -4px;
        }
    }

    .mx_BaseCard_back ~ .mx_ThreadPanel__header {
        width: calc(100% - 60px);
        margin-left: 30px;
    }

    .mx_ThreadPanel__header {
        width: calc(100% - 30px);
        height: 24px;
        display: flex;
        flex: 1;
        justify-content: space-between;
        align-items: center;

        span:first-of-type {
            font-weight: 600;
            font-size: 15px;
            line-height: 18px;
            color: $secondary-content;
        }

        .mx_AccessibleButton {
            font-size: 12px;
            color: $secondary-content;
        }

        .mx_MessageActionBar_optionsButton {
            position: relative;
        }

        .mx_MessageActionBar_maskButton {
            --size: 24px;
            width: var(--size);
            height: var(--size);
            &::after {
                mask-size: var(--size);
                mask-image: url("$(res)/img/element-icons/message/overflow-large.svg");
            }
        }

        .mx_ContextualMenu_wrapper {
            // It's added here due to some weird error if I pass it directly in the style, even though it's a numeric value, so it's being passed 0 instead.
            // The error: react_devtools_backend.js:2526 Warning: `NaN` is an invalid value for the `top` css style property.
            top: 43px;
        }

        .mx_ContextualMenu {
            position: initial;
            span:first-of-type {
                font-weight: 600;
                font-size: 12px;
                color: $primary-content;
            }

            font-size: 12px;
            color: $secondary-content;
            padding-top: 10px;
            padding-bottom: 10px;

            border: 1px solid $quinary-content;
            box-shadow: 0px 1px 3px rgba(23, 25, 28, 0.05);
        }

        .mx_ContextualMenu_chevron_top {
            left: auto;
            right: 22px;
            border-bottom-color: $quinary-content;
            &::after {
                content: "";
                border: inherit;
                border-bottom-color: $background;
                position: absolute;
                top: 1px;
                left: -8px;
            }
        }

        .mx_ThreadPanel_Header_FilterOptionItem {
            display: flex;
            flex-grow: 1;
            justify-content: space-between;
            flex-direction: column;
            padding: 10px 20px 10px 30px;
            position: relative;

            &:hover {
                background-color: $event-selected-color;
            }
            &[aria-selected="true"] {
                :first-child {
                    margin-left: -20px;
                }
                :first-child::before {
                    content: "";
                    width: 12px;
                    height: 12px;
                    margin-right: 8px;
                    mask-image: url("$(res)/img/feather-customised/check.svg");
                    mask-size: 100%;
                    mask-repeat: no-repeat;
                    background-color: $primary-content;
                    display: inline-block;
                    vertical-align: middle;
                }
            }

            :last-child {
                color: $secondary-content;
            }
        }
    }

    .mx_ThreadPanel_button {
        width: 20px;
        height: 20px;
        margin-top: -3px;
        margin-bottom: auto;
        position: relative;

        &::before {
            top: 2px;
            left: 2px;
            content: '';
            width: 16px;
            height: 16px;
            position: absolute;
            mask-position: center;
            mask-size: contain;
            mask-repeat: no-repeat;
            background: $primary-content;
        }

        &.mx_ThreadPanel_OptionsButton::before {
            mask-image: url('$(res)/img/element-icons/context-menu.svg');
        }
    }

    .mx_AutoHideScrollbar {
        background: #fff;
        background-color: $background;
        border-radius: 8px;
        width: calc(100% - 16px);
        padding-right: 16px;
    }

    .mx_RoomView_MessageList {
        padding-left: 12px;
        padding-right: 0;
    }

    .mx_EventTile, .mx_EventListSummary {
        // Account for scrollbar when hovering
        padding-top: 0;

        .mx_ThreadInfo {
            position: relative;
            padding-right: 11px;
            &::after {
                content: '';
                display: block;
                position: absolute;
                left: 0;
                bottom: -16px;
                height: 1px;
                width: 100%;
                border-bottom: 1px solid $message-action-bar-border-color;
            }
        }

        .mx_DateSeparator {
            display: none;
        }

        &.mx_EventTile_clamp:hover {
            cursor: pointer;
        }
    }

    .mx_EventTile:not([data-layout=bubble]) {
        .mx_EventTile_e2eIcon {
            left: 8px;
        }
    }

    .mx_MessageComposer {
        background-color: $background;
        border-radius: 8px;
        margin-top: 8px;
        padding: 0 8px;
        box-sizing: border-box;
    }

    .mx_ThreadPanel_dropdown {
        padding: 3px 8px;
        border-radius: 4px;
        line-height: 1.5;
        user-select: none;
    }

    .mx_ThreadPanel_dropdown:hover,
    .mx_ThreadPanel_dropdown[aria-expanded=true] {
        background: $quinary-content;
    }

    .mx_ThreadPanel_dropdown::before {
        content: "";
        width: 18px;
        height: 18px;
        background: currentColor;
        mask-image: url("$(res)/img/feather-customised/chevron-down.svg");
        mask-size: 100%;
        mask-repeat: no-repeat;
        float: right;
    }

    .mx_ThreadPanel_dropdown[aria-expanded=true]::before {
        transform: rotate(180deg);
    }

    .mx_MessageTimestamp {
        font-size: $font-12px;
    }
}

.mx_ThreadPanel_replies {
    margin-top: 8px;
}

.mx_ThreadPanel_repliesSummary {
    &::before {
        content: "";
        mask-image: url('$(res)/img/element-icons/thread-summary.svg');
        mask-position: center;
        display: inline-block;
        height: 18px;
        min-width: 18px;
        background-color: currentColor;
        mask-repeat: no-repeat;
        mask-size: contain;
        margin-right: 8px;
        vertical-align: middle;
    }

    color: $secondary-content;
    font-weight: 600;
    float: left;
    margin-right: 12px;
    font-size: $font-12px;
}

.mx_ThreadPanel_viewInRoom::before {
    mask-image: url('$(res)/img/element-icons/view-in-room.svg');
}

.mx_ThreadPanel_copyLinkToThread::before {
    mask-image: url('$(res)/img/element-icons/link.svg');
}

.mx_ThreadPanel_empty {
    border-radius: 8px;
    background: $background;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 48px;
    bottom: 8px;
    left: 8px;
    right: 8px;
    padding: 20px;

    h2 {
        color: $primary-content;
        font-weight: 600;
        font-size: $font-18px;
    }

    p {
        font-size: $font-15px;
        color: $secondary-content;
    }

    button {
        border: none;
        background: none;
        color: $accent;

        &:hover,
        &:active {
            text-decoration: underline;
            cursor: pointer;
        }
    }
}

.mx_ThreadPanel_largeIcon {
    width: 28px;
    height: 28px;
    padding: 18px;
    background: $system;
    border-radius: 50%;

    &::after {
        content: "";
        width: inherit;
        height: inherit;
        mask-image: url('$(res)/img/element-icons/thread-summary.svg');
        mask-position: center;
        display: inline-block;
        mask-repeat: no-repeat;
        mask-size: contain;
        background-color: $secondary-content;
    }
}
